package cn.design;

import cn.design.realize.Context;
import cn.design.realize.FinalPaymentAmountEnum;
import cn.design.realize.NonMemberStrategy;
import cn.design.realize.OrdinaryMemberStrategy;
import cn.design.realize.SeniorMemberStrategy;

import java.math.BigDecimal;

/**
 * @author dlq
 * @description
 *      策略模式 客户端类 ----枚举实现
 * @date 2020/10/15 9:30
 * @since 1.0
 */
public class StrategyClientDemoForEnum {

    public static void main(String[] args) {
        //某家超市会员制: 非会员 , 普通会员,高级会员
        // 不同的等级会员打折不一样(总金额打折)
        // 非会员:  100%支付
        // 普通会员: 90%
        // 高级会员: 80%

        //1. 假设 所有商品总金额 100
        BigDecimal sum = new BigDecimal("100");

        //非会员策略
        BigDecimal  finalAmount  = FinalPaymentAmountEnum.NON.calculate(sum);
        System.out.println("非会员给的金额: "+finalAmount);

        //普通会员
        finalAmount  = FinalPaymentAmountEnum.ORDINARY.calculate(sum);
        System.out.println("普通会员给的金额: "+finalAmount);

        //高级会员
        finalAmount  = FinalPaymentAmountEnum.Senior.calculate(sum);
        System.out.println("高级会员给的金额: "+finalAmount);
    }

}
